package avicit.bdp.dcs.log.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.common.dto.TaskInstanceDto;
import avicit.bdp.common.service.dto.TaskSpeedDTO;
import avicit.bdp.dcs.log.dto.JobLogDTO;
import avicit.bdp.dcs.log.dto.TaskLogDetailDTO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @金航数码科技有限责任公司
 * @作者：liyb
 * @邮箱：liyb@avic-digital.com
 * @创建时间： 2020-08-04 17:03
 * @类说明：
 * @修改记录：
 */
@Repository
public interface TaskSpeedDao extends BaseDAO<TaskSpeedDTO> {

    TaskSpeedDTO getTaskSpeedByTaskId(@Param("taskId") String taskId);

    Page<TaskSpeedDTO> getHistoryTaskSpeedListByProcessInstanceId(@Param("processInstanceId") String processInstanceId);

    Page<TaskSpeedDTO> getHistorySparkTaskListByProcessInstanceId(@Param("processInstanceId") String processInstanceId);

    Long selectCountByTaskInstanceId(@Param("taskInstanceId") String taskInstanceId,
                                     @Param("startTime") String startTime,
                                     @Param("endTime") String endTime);

    List<TaskLogDetailDTO> getPerformanceByTaskInstanceId(@Param("taskInstanceId") String taskInstanceId,
                                                          @Param("startTime") String startTime,
                                                          @Param("endTime") String endTime);

    /**
     * 间隔获取性能数据
     * @param taskInstanceId
     * @param startTime
     * @param endTime
     * @return
     */
    List<TaskLogDetailDTO> getIntervalPerformanceByTaskInstanceId(@Param("taskInstanceId") String taskInstanceId,
                                                             @Param("startTime") String startTime,
                                                             @Param("endTime") String endTime,
                                                             @Param("interval") Integer interval);

    Page<JobLogDTO> getHistoryJobLogListByJobId(@Param("jobId") String jobId);

    List<Map<String, Object>> getSourceDiffListByTaskInstance(@Param("taskInstanceList") List<TaskInstanceDto> taskInstanceList);

    List<Map<String, Object>> getSourceDiffListByProcessInstance(@Param("processInstanceList") List<String> processInstanceList);

}
